@@ -149,6 +149,35 @@ MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/') |
||
149 | 149 |
|
150 | 150 |
MEDIA_URL = '/media/' |
151 | 151 |
|
152 |
+# logger setting |
|
153 |
+LOGGING = { |
|
154 |
+ 'version': 1, |
|
155 |
+ 'disable_existing_loggers': False, |
|
156 |
+ 'formatters': { |
|
157 |
+ 'verbose': { |
|
158 |
+ 'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s' |
|
159 |
+ }, |
|
160 |
+ 'simple': { |
|
161 |
+ 'format': '%(levelname)s %(message)s' |
|
162 |
+ }, |
|
163 |
+ }, |
|
164 |
+ 'handlers': { |
|
165 |
+ 'logit': { |
|
166 |
+ 'level': 'DEBUG', |
|
167 |
+ 'class': 'logging.FileHandler', |
|
168 |
+ 'filename': '/tmp/logit.log', |
|
169 |
+ 'formatter': 'verbose' |
|
170 |
+ }, |
|
171 |
+ }, |
|
172 |
+ 'loggers': { |
|
173 |
+ 'logit': { |
|
174 |
+ 'handlers': ['logit'], |
|
175 |
+ 'level': 'DEBUG', |
|
176 |
+ 'propagate': True, |
|
177 |
+ }, |
|
178 |
+ }, |
|
179 |
+} |
|
180 |
+ |
|
152 | 181 |
# REST_FRAMEWORK 设置 |
153 | 182 |
# See http://www.django-rest-framework.org/#example |
154 | 183 |
REST_FRAMEWORK = { |
@@ -180,16 +209,18 @@ REDIS_EXPIRED_YEAR = 31622400 # 366 * 24 * 60 * 60 |
||
180 | 209 |
|
181 | 210 |
# 微信设置 |
182 | 211 |
WECHAT = { |
183 |
- 'token': '5201314', |
|
184 |
- 'appID': '', |
|
185 |
- 'appsecret': '', |
|
186 |
- 'mchID': '', |
|
187 |
- 'apiKey': '', |
|
212 |
+ 'JSAPI': { |
|
213 |
+ 'token': '5201314', |
|
214 |
+ 'appID': '', |
|
215 |
+ 'appsecret': '', |
|
216 |
+ 'mchID': '', |
|
217 |
+ 'apiKey': '', |
|
218 |
+ }, |
|
188 | 219 |
} |
189 | 220 |
|
190 |
-WECHAT_GET_CODE = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=snsapi_base&state=%s#wechat_redirect' |
|
221 |
+WECHAT_GET_CODE_BASE = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=snsapi_base&state=%s#wechat_redirect' |
|
191 | 222 |
WECHAT_GET_CODE_USERINFO = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=snsapi_userinfo&state=%s#wechat_redirect' |
192 |
-WECHAT_GET_ACCESS_TOKEN = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code' |
|
223 |
+WECHAT_GET_OAUTH2_ACCESS_TOKEN = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code' |
|
193 | 224 |
|
194 | 225 |
WECHAT_GET_USERINFO = 'https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s' |
195 | 226 |
|
@@ -10,16 +10,18 @@ from pay.models import OrderInfo |
||
10 | 10 |
from utils.error.errno_utils import OrderStatusCode |
11 | 11 |
from utils.error.response_utils import response |
12 | 12 |
|
13 |
+from logit import logit |
|
14 |
+ |
|
13 | 15 |
from TimeConvert import TimeConvert as tc |
14 | 16 |
from wechatpy import WeChatPay, WeChatPayException |
15 | 17 |
|
16 | 18 |
import xmltodict |
17 | 19 |
|
18 |
-WECHAT = settings.WECHAT |
|
19 | 20 |
|
20 |
-wxpay = WeChatPay(WECHAT['appID'], WECHAT['apiKey'], WECHAT['mchID']) |
|
21 |
+WECHAT = settings.WECHAT |
|
21 | 22 |
|
22 | 23 |
|
24 |
+@logit |
|
23 | 25 |
@transaction.atomic |
24 | 26 |
def wx_order_create_api(request): |
25 | 27 |
""" |
@@ -37,6 +39,11 @@ def wx_order_create_api(request): |
||
37 | 39 |
# JSAPI--公众号支付、NATIVE--原生扫码支付、APP--app支付,统一下单接口trade_type的传参可参考这里 |
38 | 40 |
trade_type = request.POST.get('trade_type', '') |
39 | 41 |
|
42 |
+ # 根据 trade_type 获取 wechat 配置 |
|
43 |
+ wechat = WECHAT.get(trade_type, {}) |
|
44 |
+ # WeChatPay 初始化 |
|
45 |
+ wxpay = WeChatPay(wechat.get('appID'), wechat.get('apiKey'), wechat.get('mchID')) |
|
46 |
+ |
|
40 | 47 |
# 生成订单 |
41 | 48 |
order = OrderInfo.objects.create(from_uid=from_uid, to_lid=to_lid, to_uid=to_uid, total_fee=total_fee) |
42 | 49 |
|
@@ -74,6 +81,7 @@ def order_paid_success(order): |
||
74 | 81 |
order.save() |
75 | 82 |
|
76 | 83 |
|
84 |
+@logit |
|
77 | 85 |
@transaction.atomic |
78 | 86 |
def wx_notify_url_api(request): |
79 | 87 |
""" |
@@ -4,6 +4,7 @@ MySQL-python==1.2.5 |
||
4 | 4 |
TimeConvert==1.1.6 |
5 | 5 |
cryptography==1.2.1 |
6 | 6 |
django-curtail-uuid==1.0.0 |
7 |
+django-logit==1.0.0 |
|
7 | 8 |
django-multidomain==1.1.4 |
8 | 9 |
django-shortuuidfield==0.1.3 |
9 | 10 |
djangorestframework==3.3.1 |